.\" -*- nroff -*-
.TH STAP\-SERVER 8
.SH JMÉNO
stap\-server \- kompilační server systemtapu

.\" macros
.de SAMPLE

.nr oldin \\n(.i
.br
.RS
.nf
.nh
..
.de ESAMPLE
.hy
.fi
.RE
.in \\n[oldin]u

..

.SH POUŽITÍ

.br
[
.B service
]
.B stap\-server
{
.B start
|
.B stop
|
.B restart
|
.B condrestart
|
.B try\-restart
|
.B force\-reload
|
.B status
} [
.I options
]

.SH POPIS

Kompilační server systemtapu (stap\-server) je síťová služba.  Přijímá
zabezpečené SSL spojení od klienta a vykonává požadavky na spuštění příkazu
.I stap .
Každý stap\-server inzeruje svoji přítomnost a konfiguraci na lokální síti
prostřednictvím mDNS (\fIavahi\fR), a tím umožňuje klientům automatickou
detekci serverů.


.PP
stap\-server nabízí:
.IP \(bu 4
síťovou službu umožňující přístup ke kompilačním serverům systemtapu
.IP \(bu 4
pohodlné ovládání nakonfigurovaných, nebo "ad-hoc" kompilačních serverů systemtapu

.SH ARGUMENTY
Musí být určena alespoň jedna z následujících voleb:
.TP
.B start
Spustit servery.  Určené servery budou nastartovány.  Pokud není určen žádný
server, spustí se nakonfigurované servery.  Pokud není žádný server
nakonfigurován, spustí se server pro verzi jádra architekturu odpovídající
hostitelskému stroji.

Pokud je určený server již spuštěn, bude pro něj požadavek na spuštění ignorován.
Pokud selže start daného serveru, operace skončí chybou.

.TP
.B stop
Zastavit server(y).  Určené servery se zastaví.
Pokud žádný server není určen, zastaví se všechny běžící servery.  Pokud určený
server neběží, skončí pro něj "stop" akce úspěchem.  Pokud pokus o zastavení
serveru selže, stap\-server selže též.

.TP
.B restart
Zastavit a znovu nastartovat služby.  Specifikované servery se zastaví a znovu
nastartují.  Pokud není žádný server určen, dojde k pokusu o restart všech
serverů.  Pokud žádné neběží, bude se 'restart' rovnat pokusu o \fIstart\fR.

.TP
.B condrestart
Zastavit a znovu nastartovat služby.  Specifikované servery se zastaví a znovu
nastartují.  Pokud určený server neběží, nebude nastartován.  Pokud není žádný
server určen, dojde k pokusu o restart všech běžících serverů.  Pokud žádný server
neběží, nestane se nic.

.TP
.B try\-restart
Tato akce je shodná s \fIcondrestart\fR.

.TP
.B force\-reload
Zastavit všechny běžící servery, znovu načíst konfigurační soubory, a restartovat
služby jako by byl dán příkaz
.I start .

.TP
.B status
Vypsat informaci o stavu serverů.  Vypíše informaci o specifikovaných serverech.
Pokud nebyl žádný server specifikován, vypíše se informace o stavu všech
běžících serverů.

.SH VOLBY
Pro upřesnění argumentů je možno použít následující volby:

.TP
\fB\-c\fR \fIconfigfile\fR
Určuje globální konfigurační soubor jako dodatek k výchozímu globálnímu
konfiguračnímu souboru popsanému níže.  Zadaný soubor bude zpracován po
výchozím globálním konfiguračním souboru.  Pokud se volba \fB\-c\fR použije
více než jednou, bude brán zřetel jen na poslední použití.

.TP
\fB\-a\fR \fIarchitecture\fR
Tato volba určuje cílovou architekturu serveru a je analogická volbě \fB\-a\fR
programu \fIstap\fR.  Viz manuálová stránka
.IR stap (1)
, která obsahuje podrobnosti.

Výchozí architektura je architektura hostitelského systému.

.TP
\fB\-r\fR \fIkernel\-release\fR
Určuje verzi cílového jádra a je analogická volbě \fB\-r\fR programu \fIstap\fR.
Viz manuálová stránka
.IR stap (1)
, která obsahuje podrobnosti.
Výchozí verze je verze hostitelského systému.

.TP
\fB\-I\fR \fIpath\fR
Tato volba určuje dodatečné umístění, ve kterém budou servery hledat tapset
skripty.  Je analogická volbě \fB\-I\fR příkazu \fIstap\fR.  Viz manuálová stránka
.IR stap (1)
, která obsahuje podrobnosti.

.TP
\fB\-R\fR \fIpath\fR
Tato volba určuje umístění zdrojových kódů pro překlad jaderného modulu
systemtapu pro použití systemtap serverů a je analogická volbě \fB\-R\fR
programu \fIstap\fR.  Viz manuálová stránka
.IR stap (1)
, která obsahuje podrobnosti.

.TP
\fB\-B\fR \fIoptions\fR
Tato volba určuje volby, které se předají příkazu \fImake\fR při sestavování
systemtap modulu a je analogická volbě \fB\-B\fR programu \fIstap\fR.
Viz manuálová stránka
.IR stap (1)
, která obsahuje podrobnosti.

.TP
\fB\-i\fR
Tato volba určuje systemtap server, který obsluhuje všechny verze jádra, které
jsou nainstalovány v \fI/lib/modules/\fR.

.TP
\fB\-n\fR \fInickname\fR
Umožňuje určit server pomocí přezdívky.  Pokud se nastaví \fB\-n\fR, bude použit
běžící server s danou přezdívkou.  Pokud se takový server nenajde, budou na danou
přezdívku prohledány konfigurační soubory pro výchozí servery, nebo bude
prohledána cesta určená v globálním konfiguračním souboru, nebo v konfiguračním
souboru určeném přepínačem \fB\-c\fR.  Pokud se požadovaný server najde, použijí
se pro něj přepínače \fB\-a\fR, \fB\-r\fR, \fB\-I\fR, \fB\-R\fR, \fB\-B\fR a
\fB\-u\fR.  Pokud se žádný server pro danou přezdívku nenajde a akce je
.I start
(nebo akce která se tak chová) (viz \fBARGUMENTY\fR), server s danou přezdívkou
se nastartuje.

.TP
\fB\-p\fR \fIpid\fR
Tato volba umožňuje určit server prostřednictvím ID procesu.  Pokud se nastaví
\fB\-p\fR, bude hledán běžící server s daným PID.  Pokud se takový nenajde,
vznikne chyba.  Pokud se takový server najde, předají se mu volby
\fB\-a\fR, \fB\-r\fR, \fB\-I\fR, \fB\-R\fR, \fB\-B\fR a \fB\-u\fR.

.TP
\fB\-u\fR \fIuser\-name\fR
Každý kompilační server systemtapu se za normálních okolností spouští pod uživatelem
\fIstap\-server\fR (pro initscript) nebo jako uživatel, který spouští
\fIstap\-server\fR,
pokud neexistuje jiné nastavení (viz sekce SOUBORY).  Tato volba určuje uživatele, pod
kterým poběží servery.  Takový uživatel musí být členem skupiny \fIstap\-server\fR.

.TP
\fB\-\-log\fR \fIlogfile\fR
Tato volba umožňuje nastavit pro každý server separátní log soubor.  Volbu lze
opakovat a tím nastavit log soubor každému ze specifikovaných serverů zvlášť.
Pokud je specifikováno více serverů, než voleb \-\-log, použije se pro zbývající
servery výchozí log soubor (viz sekce \fBSOUBORY\fR).

.TP
\fB\-\-port\fR \fIport\-number\fR
Nastaví port pro každý specifikovaný server.  Volbu lze opakovat a určit tak
port pro všechny specifikované servery.  Pokud je specifikováno více serverů než
voleb \-\-port, bude pro zbývající servery zvolen náhodný port.

.TP
\fB\-\-ssl\fR \fIcertificate\-db\-path\fR
Tato volba umožňuje specifikaci separátní NSS databáze pro každý server, Volbu
lze opakovat a aplikovat ji na jednotlivé specifikované servery.  Pokud je
specifikováno více serverů, než voleb \-\-ssl, bude pro zbývající servery
použita výchozí databáze (viz sekce \fB SOUBORY\fR).

.TP
\fB\-\-max\-threads\fR \fIthreads\fR
Určuje počet vláken pro obsluhu současných požadavků.  Pokud \fIthreads\fR == 0,
budou všechny požadavky obsluhovány sériově v jediném - hlavním vlákně.  Výchozí
hodnota je počet dostupných jader procesoru.

.SH KONFIGURACE

Pomocí konfiguračních souborů je možné:
.IP \(bu 4
určit globální konfiguraci logování, konfigurační soubory serverů, stavové
soubory a další globální parametry.
.IP \(bu 4
určit které servery se nastartují ve výchozím nastavení.

.SH Globální Konfigurace

Globální konfigurační soubor obsahuje
nastavení globálních proměnných, které ovlivňují celkovou operaci služby.
Každá řádka začínající znakem '#' se ignoruje.  Všechny ostatní řádky musejí mít
tvar \fIVARIABLE=VALUE\fR.  Nejde o shell skript.  Celý zbytek řáky za znakem '='
bude interpretován jako hodnota a ta bude přiřazena příslušné proměnné.

Lze použít následující proměnné:

.TP
.B CONFIG_PATH
Absolutní cesta k adresáři, který obsahuje výchozí konfiguraci serverů.

.TP
.B STAT_PATH
Absolutní cesta k adresáři se status soubory.

.TP
.B LOG_FILE
Absolutní cesta k log souboru.

.TP
.B STAP_USER
Uživatel pod kterým stap-server(y) poběží.  Výchozí hodnota je \fIstap\-server\fR
pro initskript, jinak uživatel, který spouští \fIstap\-server\fR.

.PP
Následuje příklad globálního konfiguračního souboru:
.SAMPLE
CONFIG_PATH=~<user>/my-stap-server-configs
LOG_FILE=/tmp/stap-server/log
.ESAMPLE

.SH Individuální konfigurace serveru

Pokud pro akci \fIstart\fR (nebo jí podobnou akci) nebyly specifikovány
konkrétní servery, budou nastartovány servery odpovídající jednotlivým
individuálním konfiguračním souborům. Každý konfigurační soubor obsahuje
nastavení proměnných, které se použijí ke zkonfigurování individuálního
serveru.

Každá řádka začínající znakem '#' se ignoruje.  Všechny ostatní řádky musí být
tvaru \fIVARIABLE=VALUE\fR.  Nejde o shell skript.  Celý zbytek řádku za znakem '='
se interpretuje jako hodnota.

Každý konfigurační soubor musí mít název s příponou \fI.conf\fR.  Viz
\fIstappaths\fR(7) kde je popsáno výchozí umístění těchto souborů.  Toto výchozí
umístění může být změněno v globálním konfiguračním souboru pomocí volby
\fB\-c\fR (viz \fIOPTIONS\fR).

Lze použít následující proměnné:
.TP
.B ARCH
Určuje cílovou architekturu pro daný server a odpovídá přepínači \fB\-a\fR (viz
\fIVOLBY\fR).  Pokud \fBARCH\fR není nastavena, použije se architektura
hostitelského stroje jako výchozí.

.TP
.B RELEASE
Určuje verzi jádra pro daný server a odpovídá volbě \fB\-r\fR (viz \fIVOLBY\fR).
Pokud \fBRELEASE\fR není nastavena, použije se release hostitelského stroje jako
výchozí.

.TP
.B BUILD
Určuje volby, které se předají příkazu \fImake\fR při sestavování jaderného
modulu systemtapu.  Jde o proměnnou typu pole, kde každý prvek odpovídá volbě
\fB\-B\fR (viz \fIVOLBY\fR).  Pomocí \fBBUILD=STRING\fR se pole vymaže a první
prvek se nastaví na \fBSTRING\fR.  Pomocí \fBBUILD+=STRING\fR se do pole přidá
\fBSTRING\fR jako další prvek.

.TP
.B INCLUDE
Určuje seznam adresářů, ve kterých bude server hledat tapset skripty.  Jde o
pole, kde každý prvek odpovídá přepínači \fB\-I\fR, viz \fIVOLBY\fR).
Prostřednictvím zápisu \fBINCLUDE=PATH\fR  se pole smaže a první jeho prvek se
nastaví na \fBPATH\fR.  Pomocí zápisu \fBINCLUDE+=PATH\fR se do pole přidá
\fBPATH\fR jako další prvek.

.TP
.B RUNTIME
Určuje adresář, který obsahuje zdrojové soubory potřebné pro sestavení jaderného
modulu systemtapu.  Odpovídá přepínači \fB\-R\fR (viz \fIVOLBY\fR).

.TP
.B USER
Určuje uživaltele, pod kterým server poběží a odpovídá volbě \fB\-u\fR
(viz \fIVOLBY\fR).

.TP
.B NICKNAME
Odpovídá přezdívce pro server a také volbě \fB\-n\fR (viz \fIVOLBY\fR).

.TP
.B LOG
Určuje umístění logovacího souboru pro daný server a odpovídá volbě
\fB\-\-log\fR (viz \fIVOLBY\fR).

.TP
.B PORT
Určuje síťový port, na kterém má daný server poslouchat.  Odpovídá volbě
\fB\-\-port\fR (viz \fIVOLBY\fR).

.TP
.B SSL
Určuje umístění certifikační databáze NSS, kterou má daný server použít a
odpovídá volbě \fB\-\-ssl\fR (viz \fIVOLBY\fR).

.TP
.B MAXTHREADS
Určuje maximální počet vláken pro obsluhu současných požadavků daným serverem
Odpovídá volbě \fB\-\-max\-threads\fR (viz \fIVOLBY\fR).

.PP
Následuje ukázka konfiguračního souboru:
.SAMPLE
ARCH=
USER=
RELEASE=
NICKNAME=native
.ESAMPLE
Tím, že ponecháme ARCH, USER, a RELEASE prázdné docílíme toho, že se pro ně
použijí výchozí hodnoty.

Konkrétnější příklad:
.SAMPLE
ARCH=i386
RELEASE=2.6.18-128.el5
PORT=5001
LOG=/path/to/log/file
.ESAMPLE

Komplikovanější příklad:
.SAMPLE
USER=serveruser
RELEASE=/kernels/2.6.18-92.1.18.el5/build
INCLUDE=/mytapsets
INCLUDE+=/yourtapsets
BUILD='VARIABLE1=VALUE1 VARIABLE2=VALUE2'
DEFINE=STP_MAXMEMORY=1024
DEFINE+=DEBUG_TRANS
RUNTIME=/myruntime
NICKNAME=my-server
SSL=/path/to/NSS/certificate/database
.ESAMPLE

.SH AUTENTIZACE
Bezpečnost SSL spojení mezi klientem a serverem závisí na správném zacházení
s certifikáty.

.PP
Důvěryhodnost daného systemtap serveru nelze určit automaticky bez důvěryhodné
autority, která vydala certifikát.  To nemusí být praktické pro každodenní
použití, proto se klienti autentizují proti své vlastní databázi důvěryhodných
certifikátů.  V tomto kontextu vytvoření relace důvěry znamená přidání
serverového certifikátu do databáze klienta.

.PP
Pro initscript lokálního serveru se toto děje automaticky.  Jakmile se nainstaluje
balíček \fIsystemtap\-server\fR, certifikát serveru pro výchozího uživatele
(\fIstap\-server\fR) se automaticky vygeneruje a přidá do databáze lokálního
klienta.  Lokální klient tak automaticky považuje lokální server za důvěryhodný
"module signer".

.PP
Je-li stap spuštěn neprivilegovaným uživatelem (t.j. uživatelem, který není
root, ani člen skupiny stapdev, ale může být členem skupiny stapusr a/nebo
stapsys) automaticky se použijí volby \fI\-\-use\-server\fR a \fI\-\-privilege\fR.
To znamená, že neprivilegovaní uživatelé mohou používat lokální stap server v
neprivilegovaném režimu bez zvláštních nastavení.  Neprivilegovaní uživatelé
mohou též používat kompilační server prostřednictvím přepínačů
\fI\-\-use\-server\fR a \fI\-\-privilege\fR, ale samozřejmě nebudou moci zavést
systemtap modul do jádra (s volbou -p4 se o to systemtap nebude pokoušet).

.PP
Aby bylo možno použít stap server na vzdáleném stroji, je potřeba nainstalovat
jeho serverový certifikát do klienta.  Viz volba \fI\-\-trust\-servers\fR v
manuálové stránce
.IR stap (1)
a také soubor README.unprivileged mezi zdrojovými soubory systemtapu.

.SH PŘÍKLADY
Jednoduché příklady shrnuje manuálová stránka
.IR stapex (3stap) .
.PP
Nastartovat zkonfigurovaný server, nebo výchozí server pokud žádný server není
zkonfigurovaný:
.PP
.B \& $ [ service ] stap\-server start
.PP
Spustit systemtap server, který bude obsluhovat všechna jádra nainstalovaná v /lib/modules:
.PP
.B \& $ [ service ] stap\-server start \-i
.PP
Vypsat informace o běžících serverech:
.PP
.B \& $ [ service ] stap\-server status
.PP
Nastartovat server s konfigurací podobnou jinému již běžícímu serveru s danou
přezdívkou NICKNAME, ovšem pro odlišnou architekturu:
.PP
.B \& $ [ service ] stap\-server start \-n \fINICKNAME\fB \-a \fIARCH\fR
.PP
Nastartovat server pro nenainstalované jádro (křížová kompilace)
.PP
.B \& $ [ service ] stap\-server start \-a \fIARCH\fB \-r \fI/BUILDDIR\fR
.PP
Zastavit jeden ze serverů odkazem na jeho PID (dle \fBstap\-server status\fR):
\fBstap\-server status\fR):
.PP
.B \& $ [ service ] stap\-server stop \-p \fIPID\fR
.PP

Spustit skript prostřednictvím kompilačního serveru:
.PP
.B \& $ stap SCRIPT \-\-use\-server
.PP
Spustit skript jako neprivilegovaný uživatel pomocí kompilačního serveru:
.PP
.B \& $ stap SCRIPT
.PP
Zastavit všechny kompilační servery:
.PP
.B \& $ [ service ] stap\-server stop
.PP
Restartovat server po změně globální konfigurace a/nebo když byl přidán nový
, nebo odebrán, či změněn existující server:
.PP
.B \& $ [ service ] stap\-server force-reload

.SH BEZPEČNOST A OCHRANA SOUKROMÍ
Systemtap je systémový administrační nástroj.  Zpřístupňuje interní datové struktury
jádra, které mohou obsahovat privátní informace.  Přečtěte si manuálovou stránku
.IR stap (1)
která přináší více informací.

.PP
Jako síťový server by měl stap\-server být aktivován s rozvahou, aby se omezila
všechna relevantní rizika.  Zvažte následující opatření:
.TP
1
Spouštějte stap\-server pod běžným uživatelem, nikdy ne pod uživatelem root.

Když je stap\-server spuštěn jako služba (t.j. \fBservice stap\-server\fR ...),
pak výchozí chování je, že všechny servery běží pod uživatelem
\fIstap\-server\fR.  Při přímém spuštění běží \fBservice stap\-server\fR pod
uživatelem který jej vyvolal.  V každém případě lze uživatele změnit volbou
\fI\-u\fR, nebo případně nastavením \fISTAP_USER=\fRusername v globálním
konfiguračním souboru, nebo nastavením \fIUSER=\fRusername v konfiguračním
souboru individuálního serveru.  Daný uživatel musí mít právo spustit proces
pod jiným uživatelem.  Vice informací viz \fIKONFIGURACE\fR.

Zvolený uživatel musí mít také právo zapisovat do logovacího souboru.  Umístění
logovacího souboru lze upravit nastavením \fILOG_FILE=\fRpath v globálním
konfiguračním souboru.  Vice informací viz \fIKONFIGURACE\fR.

Zvolený uživatel musí mít právo čtení i zápisu do adresáře obsahujícího status
soubory.  Toto umístění lze upravit nastavením \fISTAT_PATH=\fRpath v globálním
konfiguračním souboru.  Vice informací viz \fIKONFIGURACE\fR.

Zvolený uživatel musí mít právo čtení a zápisu pro adresář, kde se sestavuje
uprobes.ko a související soubory.

Systemtap server nepoběží, pokud zvoleným uživatelem je root.

.TP
2
Spusťte stap\-server s omezeními na maximální čas běhu,
velikost souboru, velikost použité paměti tak, aby ani potenciálně chybné
vstupy nezpůsobily škody.

Pokud uživatelem, pod kterým server běží, je \fIstap\-server\fR, pak každý
požadavek server obsluhuje v rámci limitů nastavených v souboru
\fI~stap-server/.systemtap/rc\fR.  V opačném případě nejsou žádné limity
nastaveny.

.TP
3
Spusťte stap\-server při nastavené proměnné prostřdí TMPDIR, která ukazuje do
odděleného umístění, kde jsou zapnuty uživatelské kvóty.  Tím se zabrání
nežádoucímu zaplnění souborového systému.

Výchozí TMPDIR je \fI/tmp/\fR.

.TP
4
Aktivujte firewall tak, aby klientské požadavky mohly přicházet jen z relativně
bezpečných sítí.

Pro automatickou volbu serverů klienty je třeba nainstalovat \fIavahi\fR jak
na serveru, tak i na klientovi.  Firewall musí propouštět \fImDNS\fR zprávy.

.PP

Kompilační server systemtapu a související nástroje používají k síťové
komunikaci SSL jak je implementovaná v rámci NSS.  NSS se také používá pro
správu certifikátů.  Související databáze certifikátů musí být odpovídajícím
způsobem chráněná, aby nedošlo ke snížení bezpečnosti systému.  Pro navýšení
bezpečnosti kontroluje systemtap klient správná přístupová oprávnění dříve než
přistoupí k databázi certifikátů.

.SH SOUBORY
.TP
Důležité soubory a jim odpovídající umístění shrnuje manuálová stránka
stappaths (7).

.SH VIZ TÉŽ
.nh
.nf
.IR stap (1),
.IR staprun (8),
.IR stapprobes (3stap),
.IR stappaths (7),
.IR stapex (3stap),
.IR avahi ,
.IR ulimit (1),
.IR NSS

.SH CHYBY
Použijte projektovou bugzillu, nebo mailing list.
.nh
.BR http://sourceware.org/systemtap/ ", " <systemtap@sourceware.org> .
.hy
.PP
.IR error::reporting (7stap),
.BR https://sourceware.org/systemtap/wiki/HowToReportBugs
.hy
